#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <memory.h>
#include <stdbool.h>

typedef int DataType;

void IsSorted(DataType* arr, int n);

void TimeTest(void (*Sort)(DataType*, int), int* arr, int n);

int HeapPop(DataType* arr, int* n);

void HeapAdjustDown(DataType* arr, int parent, int n);

void InsertSort(DataType* arr, int n);

void ShellSort(DataType* arr, int n);

void HeapSort(DataType* arr, int n);

void SelectSort(DataType* arr, int n);

void BubbleSort(DataType* arr, int n);